def verify_fault_tolerant(fault_tolerant, station_config):
    """
    验证并设置容错参数
    
    Args:
        fault_tolerant: 容错参数
        station_config: 站点配置字典
    """
    if fault_tolerant:
        try:
            # 尝试直接转换为浮点数（兼容整数和小数）
            tolerance = float(fault_tolerant)
            station_config["diff_num"] = tolerance
        except (ValueError, TypeError):
            # 若转换失败，使用默认值（如 1）
            station_config["diff_num"] = 1
    else:
        # 否则，使用默认值（如 0）
        station_config["diff_num"] = 0



def verify_station_id(station_subject_id, station_config):
    """
    验证站点ID是否与主体气站一致
    
    Args:
        station_id: 站点ID
        station_config: 站点配置字典
    
    Raises:
        ValueError: 当站点ID与主体气站不一致或格式不正确时抛出
    """
    if station_subject_id is not None and str(station_subject_id).strip():
        # 拆分 station_subject_id，转换为整数列表
        station_ids = [int(s.strip()) for s in str(station_subject_id).split(",") if s.strip()]
        main_body = station_config["main_body_gas_station"]

        # 将 main_body 转为集合，方便判断
        if isinstance(main_body, int):
            main_body_set = {main_body}
        elif isinstance(main_body, (list, tuple)):
            main_body_set = set(main_body)
        else:
            raise TypeError("main_body_gas_station 类型不支持")

        # 判断 station_ids 是否都在 main_body_set 中
        if not all(sid in main_body_set for sid in station_ids):
            raise ValueError("Excel文件与选择的气站主体不一致")


def verify_ignore_time(ignore_time, station_config):
    """
    验证并设置忽略时间参数
    
    Args:
        ignore_time: 忽略时间参数
        station_config: 站点配置字典
    """
    if ignore_time:
        station_config["is_time_shuffled"] = True  # 时间匹配减弱


def verify(fault_tolerant, station_id, ignore_time, station_config):
    verify_fault_tolerant(fault_tolerant, station_config)
    verify_station_id(station_id, station_config)
    verify_ignore_time(ignore_time, station_config)
